拉取
|
|
for map in self.cache.hscan_iter('push_cuid_to_sid', match='*', count=10000): if int(map[1]) in _sessions.keys(): #print '----online------' _onlineMaps[map[0]] = 1 else: #print '----offline------' _offlineMaps[map[0]] = 0 |
注:每次取到10000行,本地for循环后再去取
更新
redis只有key才能设置过期时间,所以hash不能设置过期时间。
redis可以通过mset批量写入key,value值,但是如果对于写入后的key,value值一个一个设置过期时间的话速度较慢,最近发现了一个可以同时完成批量写入并设置过期时间的方法,记录一下,希望对他人有所帮助。
|
|
with redis_client.pipeline(transaction=False) as p: for key,val in zip(keys,values): p.set(key, val, 6000) #6000代表6000秒,可以自己设置 p.execute() #批量执行 |
使用pipelining 发送命令时,redis server必须部分请求放到队列中(使用内存)执行完毕后一次性发送结果,在 pipeline 使用期间,将“独占”链接,无法进行非“管道”类型的其他操作,直至 pipeline 关闭;如果 pipeline 的指令集很多很庞大,为了不影响其他操作(redis 最大时间lua-time-limit默认是5s),可以使用其他新建新链接操作。批量操作如下:
测试一次更新时间后再操作。
https://www.cnblogs.com/melonjiang/p/5342505.html
使用管道性能测评:
https://blog.csdn.net/qq_22152261/article/details/79434206?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link
「三年博客,如果觉得我的文章对您有用,请帮助本站成长」
共有 0 - redis 批量拉取与更新